<?php

/*
 * Classe de Gestion des Probleme de Retard et de Depart Anticipe
 * Code/ProblemeRetardDepartAnticipe.php
 */

namespace RHX\Model\Code;

use RHX\Model\Object\XData;
use RHX\Helper\RHDateTime;

class ProblemeRetardDepartAnticipe extends AbstractPresent {

    /**
     * Constructeur
     *
     * @param array $data
     */
    public function __construct($data = array()) {
	parent::__construct($data);
	$this->id	 = 19;
	$this->code	 = 'PRDA';
	$this->libelle	 = 'Problème de Retard et de Départ Anticipé';
    }

    /**
     * 
     * @param string $entree
     * @param string $sortie
     * @param int $pause
     * @param int $repas
     * @param float $taux
     * @param float $coef
     * @param string $refEntree
     * @param string $refSortie
     * @param array $param
     * @return \RHX\Model\Object\XData
     */
    public function calcul($entree, $sortie, $pause, $repas, $taux, $coef, $refEntree, $refSortie, $param) {
	$dataParent = parent::calcul($entree, $sortie, $pause, $repas, $taux, $coef, $refEntree, $refSortie, $param);

	$return = new XData();

	// Temps
	$in	 = new RHDateTime();
	$in->setTime();
	$out	 = new RHDateTime();
	$out->setTime();
	$refIn	 = new RHDateTime();
	$refIn->setTime();
	$refOut	 = new RHDateTime();
	$refOut->setTime();

	// Comparaison
	if ($refIn->isLT($in)) {
	    // La référence d'entrée est plus petite que l'heure d'entrée
	    $return->retard		 = true;
	    $return->tempsRetard	 = RHDateTime::diffHours($entree, $refEntree);
	}
	if ($refOut->isGT($out)) {
	    // La référence de sortie est plus grande que l'heure de sortie
	    $return->anticipe	 = true;
	    $return->tempsAnticipe	 = RHDateTime::diffHours($refSortie, $sortie);
	}

	// Assignation
	$return->tempsDiff	 = $dataParent->tempsDiff;
	$return->tempsValeur	 = $dataParent->tempsValeur;
	$return->montant	 = $dataParent->montant;

	return $return;
    }

}

?>
